package org.lynn.lambda.test;

import org.junit.Test;

/**
 * lambda 表达式在替代 匿名内部类的时候 ，JVM并没有生成新的类，
 * lambda被封装成了主类的一个私有方法，
 * 在JVM内部，通过invokedynamic指令进行调用。
 * <p>
 * 那么由此推论 this 关键字 指替的是当前主类
 *
 * @author linzou@linkdoc.com
 * @ClassName: LambdaForThis
 * @Description:
 * @date 2019/6/27 11:17 AM
 */
public class LambdaForThis {

    Runnable r1 = () -> System.out.println(this);
    Runnable r2 = () -> System.out.println(toString());


    @Test
    public void MainLambda() {

        new LambdaForThis().r1.run();
        new LambdaForThis().r2.run();

    }


    public String toString() {
        return "hello lambda";
    }

}
